package br.com.pixt;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

/**
 * Exemplo de como utilizar um AlarmManager para agendar um BroadcastReceiver
 * para executar daqui a X segundos
 * 
 * @author ricardo
 * 
 */
public class AgendarAlarme extends Activity {
	private static final String CATEGORIA = "ZAE";
	private static int minutos = 1;

	@Override
	protected void onCreate(Bundle icicle) {
		super.onCreate(icicle);

		Intent itParam ;
		itParam = getIntent();
		
		if (itParam!=null)
		{  
			Bundle params = itParam.getExtras();
			if (params!=null)
			{
				minutos = params.getInt("Minutos");
			}
		}

		TextView text = new TextView(this);
		text.setText("Alarme agendado para daqui a " + minutos + " minutos.");
		setContentView(text);

		// 5 segundos
		agendar(minutos);
	}

	// Agenda o alarme para executar daqui a X segundos
	private void agendar(int minutos) {
		// Intent para disparar o broadcast
		Intent it = new Intent("EXECUTAR_ALARME");
		PendingIntent p = PendingIntent.getBroadcast(AgendarAlarme.this, 0, it, 0);
	
		// Para executar o alarme depois de x segundos a partir de agora
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(System.currentTimeMillis());
		c.add(Calendar.MINUTE, minutos);
	
		// Agenda o alarme
		AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE);
		long time = c.getTimeInMillis();
		alarme.set(AlarmManager.RTC_WAKEUP, time, p);
	
		Log.i(CATEGORIA, "Alarme agendado para daqui a " + minutos + " minutos.");
	}
		
	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.i(CATEGORIA, "onDestroy() - alarme cancelado.");
		Intent it = new Intent("EXECUTAR_ALARME");
		PendingIntent p = PendingIntent.getBroadcast(AgendarAlarme.this, 0, it, 0);

		//Cancela o alarme
		AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
		//am.cancel(p);
	}
}